CComplex is a class to work with complex numbers with Free Basic. Complex numbers are represented using the type _complex. The real and imaginary part are stored in the members x and y. There is also a flat api version that you can use alone or in combination with this class (see: Complex Numbers Procedures
TYPE _complex
x AS DOUBLE ' real part
y AS DOUBLE ' imaginary part
END TYPE
Include file: CComplex.inc.
Create a new instance of the CComplex class and assigns the values passed to it.
CONSTRUCTOR CComplex
CONSTRUCTOR CComplex (BYVAL x AS DOUBLE = 0, BYVAL y AS DOUBLE = 0)
CONSTRUCTOR CComplex (BYREF cpx AS CComplex)
CONSTRUCTOR CComplex (BYREF cpx AS _complex)
| Parameter | Description |
|---|---|
| x, y | Uses the cartesian components (x,y) to set the real and imaginary parts of the complex number. |
| cpx | An instance of the CComplex class or a _complex structure. |
Uses the cartesian components (x,y) to set the real and imaginary parts of the complex number.
DIM cpx AS CComplex = TYPE(3, 4)
DIM cpx2 AS CComplex = cpx
An instance of the CComplex class.
DIM cpx AS CComplex = TYPE(3, 4)
DIM cpx2 AS CComplex = cpx
A _complex structure.
DIM cpx AS CComplex = TYPE<_complex>(3, 4)
| Name | Description |
|---|---|
| Operator LET | Assigns a value to a CComplex variable. |
| CAST operators | Converts a CComplex into another data type. |
| Comparison operators | Compares complex numbers. |
| Math operators | Add, subtract, multiply or divide complex numbers. |
| Name | Description |
|---|---|
| CAbs | Returns the magnitude of this complex number. |
| CAbs2 | Returns the squared magnitude of this complex number, otherwise known as the complex norm. |
| CAbsSqr | Returns the absolute square (squared norm) of a complex number. |
| CACos | Returns the complex arccosine of this complex number. |
| CACosH | Returns the complex hyperbolic arccosine of this complex number. |
| CACosHReal | Returns the complex arccosine of this complex number. |
| CACosReal | Returns the complex arccosine of a real number. |
| CACot | Returns the complex arccotangent of this complex number. |
| CACotH | Returns the complex hyperbolic arccotangent of this complex number. |
| CACsc | Returns the complex arccosecant of this complex number. |
| CACscH | Returns the complex hyperbolic arccosecant of this complex number. |
| CACscReal | Returns the complex arccosecant of a real number. |
| CAdd | Adds a complex number. |
| CAddImag | Adds an imaginary number. |
| CAddReal | Adds a real number. |
| CArcCos | Returns the complex arccosine of this complex number. |
| CArcCosH | Returns the complex hyperbolic arccosine of this complex number. |
| CArcCosHReal | Returns the complex arccosine of this complex number. |
| CArcCosReal | Returns the complex arccosine of a real number. |
| CArcCot | Returns the complex arccotangent of this complex number. |
| CArcCotH | Returns the complex hyperbolic arccotangent of this complex number. |
| CArcCsc | Returns the complex arccosecant of this complex number. |
| CArcCscH | Returns the complex hyperbolic arccosecant of this complex number. |
| CArcCscReal | Returns the complex arccosecant of a real number. |
| CArcSec | Returns the complex arcsecant of this complex number. |
| CArcSecH | Returns the complex hyperbolic arcsecant of this complex number. |
| CArcSecReal | Returns the complex arcsecant of a real number. |
| CArcSin | Returns the complex arcsine of this complex number. |
| CArcSinH | Returns the complex hyperbolic arcsine of this complex number. |
| CArcSinReal | Returns the complex arcsine of a real number. |
| CArcTan | Returns the complex arctangent of this complex number. |
| CArcTanH | Returns the complex hyperbolic arctangent of this complex number. |
| CArcTanHReal | Returns the complex hyperbolic arctangent of a real number. |
| CArg | Returns the argument of this complex number. |
| CArgument | Returns the argument of this complex number. |
| CASec | Returns the complex arcsecant of this complex number. |
| CASecH | Returns the complex hyperbolic arcsecant of this complex number. |
| CASecReal | Returns the complex arcsecant of a real number. |
| CASin | Returns the complex arcsine of this complex number. |
| CASinH | Returns the complex hyperbolic arcsine of this complex number. |
| CASinReal | Returns the complex arcsine of a real number. |
| CATan | Returns the complex arctangent of this complex number. |
| CATanH | Returns the complex hyperbolic arctangent of this complex number. |
| CATanHReal | Returns the complex hyperbolic arctangent of a real number. |
| CConj | Returns the complex conjugate of this complex number. |
| CConjugate | Returns the complex conjugate of this complex number. |
| CCos | Returns the complex cosine of this complex number. |
| CCosH | Returns the complex hyperbolic cosine of this complex number. |
| CCot | Returns the complex cotangent of this complex number. |
| CCotH | Returns the complex hyperbolic cotangent of this complex number. |
| CCsc | Returns the complex cosecant of this complex number. |
| CCscH | Returns the complex hyperbolic cosecant of this complex number. |
| CDiv | Divides by a complex number. |
| CDivImag | Divides by an imaginary number. |
| CDivReal | Divides by a real number. |
| CExp | Returns the complex exponential of this complex number. |
| CImag | Gets/sets the imaginary part of a complex number. |
| CInverse | Returns the inverse, or reciprocal, of a complex number. |
| CLog | Returns the complex natural logarithm (base e) of this complex number. |
| CLog10 | Returns the complex base-10 logarithm of this complex number. |
| CLogAbs | Returns the natural logarithm of the magnitude of a complex number. |
| CMagnitude | Returns the magnitude of this complex number. |
| CMod | Returns the modulus of a complex number. |
| CModulus | Returns the modulus of a complex number. |
| CMul | Multiplies by a complex number. |
| CMulImag | Multiplies by an imaginary number. |
| CMulReal | Multiplies by a real number. |
| CNeg | Negates the complex number. |
| CNegate | Negates the complex number. |
| CNegative | Negates the complex number. |
| CNorm | Returns the squared magnitude of this complex number, otherwise known as the complex norm. |
| CNthRoot | Returns the kth nth root of a complex number where k = 0, 1, 2, 3,...,n - 1. |
| CPhase | Returns the argument of this complex number. |
| CPolar | Sets the complex number from the polar representation. |
| CPow | Returns this complex number raised to a complex power or to a real number. |
| CReal | Gets/sets the real part of a complex number. |
| CRect | Uses the cartesian components (x,y) to set the real and imaginary parts of the complex number. |
| CReciprocal | Returns the inverse, or reciprocal, of a complex number. |
| CSec | Returns the complex secant of this complex number. |
| CSecH | Returns the complex hyperbolic secant of this complex number. |
| CSet | Uses the cartesian components (x,y) to set the real and imaginary parts of the complex number. |
| CSgn | Returns the sign of this complex number. |
| CSin | Returns the complex sine of this complex number. |
| CSinH | Returns the complex hyperbolic sine of this complex number. |
| CSqr | Returns the square root of a complex number. |
| CSqrt | Returns the square root of a complex number. |
| CSub | Subtracts a complex number. |
| CSubImag | Subtracts an imaginary number. |
| CSubReal | Subtracts a real number. |
| CSwap | Exchanges the contents of two complex numbers. |
| CTan | Returns the complex tangent of this complex number. |
| CTanH | Returns the complex hyperbolic tangent of this complex number. |
| Name | Description |
|---|---|
| ArcCosH | Calculates the inverse hyperbolic cosine. |
| ArcTanH | Returns the inverse hyperbolic tangent of a number. |
| IsInf | Determines whether the argument is an infinity. |
| IsInfinity | Determines whether the argument is an infinity. |
Assigns a value to a CComplex variable.
OPERATOR LET (BYREF z AS CComplex)
OPERATOR LET (BYREF z AS _complex)
| Parameter | Description |
|---|---|
| z | An instance of the CComplex class or a _complex structure. |
An instance of the CComplex class.
DIM cpx AS CComplex = TYPE(3, 4)
DIM cpx2 AS CComplex = cpx
DIM cpx AS CComplex
cpx = CComplex(3, 4)
A _complex structure.
DIM cpx AS CComplex = TYPE<_complex>(3, 4)
Returns the underlying _complex number.
OPERATOR CAST () AS _complex
OPERATOR CAST () AS STRING
This overloaded operator is not called directly.
The second overloaded operator returns the complex number as a formatted string that can be used with the PRINT statement.
Compares complex numbers for equality or inequality.
OPERATOR = (BYREF z1 AS CComplex, BYREF z2 AS CComplex) AS BOOLEAN
OPERATOR <> (BYREF z1 AS CComplex, BYREF z2 AS CComplex) AS BOOLEAN
DIM cpx1 AS CComplex = CComplex(1, 2)
DIM cpx2 AS CComplex = CComplex(3, 4)
IF cpx1 = cpx2 THEN PRINT "equal" ELSE PRINT "different"
OPERATOR + (BYREF z1 AS CComplex, BYREF z2 AS CComplex) AS CComplex
OPERATOR + (BYVAL a AS DOUBLE, BYREF z AS CComplex) AS CComplex
OPERATOR + (BYREF z AS CComplex, BYVAL a AS DOUBLE) AS CComplex
OPERATOR - (BYREF z1 AS CComplex, BYREF z2 AS CComplex) AS CComplex
OPERATOR - (BYVAL a AS DOUBLE, BYREF z AS CComplex) AS CComplex
OPERATOR - (BYREF z AS CComplex, BYVAL a AS DOUBLE) AS CComplex
OPERATOR * (BYREF z1 AS CComplex, BYREF z2 AS CComplex) AS CComplex
OPERATOR * (BYVAL a AS DOUBLE, BYREF z AS CComplex) AS CComplex
OPERATOR * (BYREF z AS CComplex, BYVAL a AS DOUBLE) AS CComplex
OPERATOR / (BYREF leftside AS CComplex, BYREF rightside AS CComplex) AS CComplex
OPERATOR / (BYVAL a AS DOUBLE, BYREF z AS CComplex) AS CComplex
OPERATOR / (BYREF z AS CComplex, BYVAL a AS DOUBLE) AS CComplex
OPERATOR += (BYREF z AS CComplex)
OPERATOR -= (BYREF z AS CComplex)
OPERATOR *= (BYREF z AS CComplex)
OPERATOR /= (BYREF z AS CComplex)
OPERATOR - (BYREF z AS CComplex, BYVAL a AS DOUBLE) AS CComplex
OPERATOR ^ (BYREF value AS CComplex, BYREF power AS CComplex) AS CComplex
OPERATOR ^ (BYREF value AS CComplex, BYVAL power AS DOUBLE) AS CComplex
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex(5, 6)
cpx2 = cpx1 + cpx2
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 = cpx1 + 11
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 = 11 + cpx1
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 = cpx1 - cpx2
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex
cpx2 = cpx1 - 11
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex
cpx2 = 11 - cpx1
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 = cpx1 * cpx2
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex
cpx2 = cpx1 * 11
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex
cpx2 = 11 * cpx1
DIM cpx1 AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex = CComplex(2, 3)
cpx2 = cpx1 / cpx2
DIM cpx1 AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex
cpx2 = cpx1 / 11
DIM cpx1 AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex
cpx2 = 11 / cpx1
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx1 += cpx2
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 -= cpx1
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx1 *= cpx2
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = CComplex(5, 6)
cpx2 /= cpx1
DIM cpx1 AS CComplex = CComplex(3, 4)
DIM cpx2 AS CComplex = -cpx1
Returns the magnitude of this complex number.
FUNCTION CAbs () AS DOUBLE
FUNCTION CMagnitude () AS DOUBLE
DIM cpx AS CComplex = CComplex(2, 3)
PRINT cpx.CAbs
Output: 3.60555127546399
Returns the squared magnitude of this complex number, otherwise known as the complex norm.
FUNCTION CAbs2 () AS DOUBLE
FUNCTION CNorm () AS DOUBLE
DIM cpx AS CComplex = CComplex(2, 3)
PRINT cpx.CAbs2
Output: 13
Returns the absolute square (squared norm) of a complex number.
FUNCTION CAbsSqr () AS DOUBLE
DIM cpx AS CComplex = CComplex(1.2345, -2.3456)
print cpx.CAbsSqr
Output: 7.025829610000001
Adds a complex number.
FUNCTION CAdd (BYREF z AS CComplex) AS CComplex
FUNCTION CAdd (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| z | The complex number to add. |
| x, y | Double values representing the real and imaginary parts. |
DIM cpx AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex = CComplex(2, 3)
cpx = cpx.CAdd(cpx2)
' --or-- cpx = cpx.CAdd(CComplex(2, 3))
DIM cpx AS CComplex = CComplex(5, 6) : cpx = cpx.CAdd(2, 3)
Adds an imaginary number.
FUNCTION CAddImag (BYVAL x AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| y | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CAddImag(10)
Adds a real number.
FUNCTION CAddReal (BYVAL x AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CAddReal(10)
Returns the complex arccosine of this complex number.
FUNCTION CArcCos () AS CComplex
FUNCTION CACos () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
print cpx.CArcCos(z)
Output: 0.9045568943023814 -1.061275061905036 * i
Returns the complex hyperbolic arccosine of this complex number. The branch cut is on the real axis, less than 1.
FUNCTION CArcCosH () AS CComplex
FUNCTION CACosH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
print cpx.CArcCosH
Output: 1.061275061905036 +0.9045568943023813 * i
Returns the complex hyperbolic arccosine of a real number.
FUNCTION CArcCosHReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CACosHReal (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing the real part of a complex number. |
Returns the complex arccosine of a real number.
For a between -1 and 1, the function returns a real value in the range [0, pi].
For a less than -1 the result has a real part of pi and a negative imaginary part.
For a greater than 1 the result is purely imaginary and positive.
FUNCTION CArcCosReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CACosReal (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing the real part of a complex number. |
DIM cpx AS CComplex
print cpx.CArcCosReal(1) ' = 0 0 * i
print cpx.CArcCosReal(-1) ' = 3.141592653589793 0 * i
print cpx.CArcCosReal(2) ' = 0 +1.316957896924817 * i
Returns the complex arccotangent of this complex number.
FUNCTION CArcCot () AS CComplex
FUNCTION CACot () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
print cpx.CArcCot
Output: 0.5535743588970452 -0.4023594781085251 * i
Returns the complex hyperbolic arccotangent of this complex number.
FUNCTION CArcCotH () AS CComplex
FUNCTION CACotH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CArcCotH
Output: 0.4023594781085251 -0.5535743588970452 * i
Returns the complex arccosecant of this complex number.
FUNCTION CArcCsc () AS CComplex
FUNCTION CACsc () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
print cpx.CArcCsc
Output: 0.4522784471511907 -0.5306375309525178 * i
Returns the complex hyperbolic arccosecant of this complex number.
FUNCTION CArcCscH () AS CComplex
FUNCTION CACscH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CArcCscH
Output: 0.5306375309525179 -0.4522784471511906 * i
Returns the complex arccosecant of a real number.
FUNCTION CArcCscReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CACscReal (BYVAL value AS DOUBLE) AS CComplex
DIM cpx AS CComplex
print cpx.CArcCscReal(1)
Output: 1.570796326794897 0 * i
Returns the complex arcsecant of this complex number.
FUNCTION CArcSec () AS CComplex
FUNCTION CASec () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
print cpx.CArcSec
Output: 1.118517879643706 +0.5306375309525176 * i
Returns the complex hyperbolic arcsecant of this complex number.
FUNCTION CArcSecH () AS CComplex
FUNCTION CASecH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CArcSecH
Output: 0.5306375309525178 -1.118517879643706 * i
Returns the complex arcsecant of a real number.
FUNCTION CArcSecReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CASecReal (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing the real part of a complex number. |
DIM cpx AS CComplex
print cpx.CArcSecReal(1.1)
Output: 0.4296996661514246 0 * i
Returns the complex arcsine of this complex number. The branch cuts are on the real axis, less than -1 and greater than 1.
FUNCTION CArcSin () AS CComplex
FUNCTION CASin () AS CComplex
DIM cpx AS CComplex
PRINT cpx.CArcSin(1, 1)
Output: 0.6662394324925152 +1.061275061905036 * i
Returns the complex hyperbolic arcsine of this complex number. The branch cuts are on the imaginary axis, below -i and above i.
FUNCTION CArcSinH () AS CComplex
FUNCTION CASinH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CArcSinH
Output: 1.061275061905036 +0.6662394324925153 * i
Returns the complex arcsine of a real number.
For a between -1 and 1, the function returns a real value in the range [-pi/2, pi/2].
For a less than -1 the result has a real part of -pi/2 and a positive imaginary part.
For a greater than 1 the result has a real part of pi/2 and a negative imaginary part.
FUNCTION CArcSinReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CASinReal (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing the real part of a complex number. |
DIM cpx AS CComplex
PRINT cpx.CArcSinReal(1)
Output: 1.570796326794897 +0 * i
Returns the complex arctangent of this complex number. The branch cuts are on the imaginary axis, below -i and above i.
FUNCTION CArcTan () AS CComplex
FUNCTION CATan () AS CComplex
DIM cpx AS CComplex
PRINT cpx.CArcTan(1, 1)
Output: 1.017221967897851 +0.4023594781085251 * i
Returns the complex hyperbolic arctangent of this complex number. The branch cuts are on the real axis, less than -1 and greater than 1.
FUNCTION CArcTanH () AS CComplex
FUNCTION CATanH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CArcTanH
Output: 0.4023594781085251 +1.017221967897851 * i
Returns the complex hyperbolic arctangent of a real number.
FUNCTION CArcTanHReal (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CATanHReal (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing the real part of a complex number. |
Returns the argument of this complex number.
FUNCTION CArg () AS DOUBLE
FUNCTION CArgument () AS DOUBLE
FUNCTION CPhase () AS DOUBLE
DIM cpx AS CComplex = CComplex(1, 0)
PRINT cpx.CArg
Output: 0.0
DIM cpx AS CComplex = CComplex(0, 1)
PRINT cpx.CArg
Output: 1.570796326794897
DIM cpx AS CComplex = CComplex(0, -1)
PRINT cpx.CArg
Output: -1.570796326794897
DIM cpx AS CComplex = CComplex(-1, 0)
PRINT cpx.CArg
Output: 3.141592653589793
Returns the complex conjugate of this complex number.
FUNCTION CConjugate () AS CComplex
FUNCTION CConj () AS CComplex
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CConjugate
Returns the complex cosine of this complex number.
FUNCTION CCos () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCos
Output: 0.8337300251311491 -0.9888977057628651 * i
Returns the complex hyperbolic cosine of this complex number.
FUNCTION CCosH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCosH
Output: 0.8337300251311491 +0.9888977057628651 * i
Returns the complex cotangent of this complex number.
FUNCTION CCot () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCot
Output: 0.2176215618544027 -0.8680141428959249 * i
Returns the complex hyperbolic cotangent of this complex number.
FUNCTION CCotH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCotH
Output: 0.8680141428959249 -0.2176215618544029 * i
Returns the complex cosecant of this complex number.
FUNCTION CCsc () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCsc
Output: 0.6215180171704285 -0.3039310016284265 * i
Returns the complex hyperbolic cosecant of this complex number.
FUNCTION CCscH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CCscH
Output: 0.3039310016284265 -0.6215180171704285 * i
Divides by a complex number.
Divides by a real and an imaginary number.
FUNCTION CDiv (BYREF z AS CComplex) AS CComplex
FUNCTION CDiv (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| z | A complex number. |
| x, y | Double values representing the real and imaginary parts. |
DIM cpx AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex = CComplex(2, 3)
cpx = cpx.CDiv(cpx2)
' --or-- cpx = cpx.CDiv(CComplex(2, 3))
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CDiv(2, 3)
Divides by an imaginary number.
FUNCTION CDivImag (BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| y | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CDivImag(10)
Divides by a real number.
FUNCTION CDivReal (BYVAL x AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CDivReal(10)
Returns the complex exponential of this complex number.
FUNCTION CExp () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CExp
Output: 1.468693939915885 +2.287355287178842 * i
Gets/sets the imaginary part of a complex number.
PROPERTY CImag () AS DOUBLE
PROPERTY CImag (BYVAL x AS DOUBLE)
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex : cpx.CImag = 4
DIM d AS DOUBLE = cpx.CImag
Returns the complex natural logarithm (base e) of this complex number. The branch cut is the negative real axis.
FUNCTION CLog () AS CComplex
FUNcTION CLog (BYVAL baseValue AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| baseValue | A double value. |
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CLog
Output: 0.3465735902799727 +0.7853981633974483 * i
DIM cpx AS CComplex = CComplex(0, 0)
PRINT cpx.CLog
Output: -1.#INF
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CLog(10)
Output: 0.1505149978319906 +0.3410940884604603 * i
Returns the complex base-10 logarithm of this complex number.
FUNCTION CLog10 () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CLog10
Output: 0.1505149978319906 +0.3410940884604603 * i
Returns the natural logarithm of the magnitude of the complex number z, log|z|. It allows an accurate evaluation of \log|z| when |z| is close to one. The direct evaluation of log(CAbs(z)) would lead to a loss of precision in this case.
FUNCTION CLogAbs () AS DOUBLE
DIM cpx AS CComplex = CComplex(1.1, 0.1)
PRINT cpx.CLogAbs
Output: 0.09942542937258279
Returns the modulus of a complex number.
FUNCTION CModulus () AS DOUBLE
FUNCTION CMod () AS DOUBLE
DIM cpx AS CComplex = CComplex(2.3, -4.5)
print cpx.CModulus
Output: 5.053711507397311
Multiplies by a complex number.
Multiplies by a real and an imaginary number.
FUNCTION CMul (BYREF z AS CComplex) AS CComplex
FUNCTION CMul (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| z | A complex number. |
| x, y | Double values representing the real and imaginary parts. |
DIM cpx AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex = CComplex(2, 3)
cpx = cpx.CMul(cpx2)
' --or-- cpx = cpx.CMul(CComplex(2, 3))
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CMul(2, 3)
Multiplies by an imaginary number.
FUNCTION CMulImag (BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| y | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cx = cpx.CMulImag(3)
Multiplies by a real number.
FUNCTION CMulReal (BYVAL x AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CMulReal(2)
Negates the complex number.
FUNCTION CNeg (BYREF z AS _complex) AS _complex
FUNCTION CNegate (BYREF z AS _complex) AS _complex
FUNCTION CNegative (BYREF z AS _complex) AS _complex
Returns the kth nth root of a complex number where k = 0, 1, 2, 3,...,n - 1.
De Moivre's formula states that for any complex number x and integer n it holds that
cos(x)+ isin(x))^n = cos(nx) + isin(nx)
where i is the imaginary unit (i2 = -1).
Since z = re^(it) = r * (cos(t) + i sin(t))
where
z = (a, ib)
r = modulus of z
t = argument of z
i = sqrt(-1.0)
we can calculate the nth root of z by the formula:
z^(1/n) = r^(1/n) * (cos(x/n) + i sin(x/n))
by using log division.
FUNCTION CNthRoot (BYVAL n AS LONG, BYVAL k AS LONG = 0) AS _complex
DIM cpx AS CComplex = CComplex(2.3, -4.5)
DIM n AS LONG = 5
FOR i AS LONG = 0 TO n - 1
print CStr(cpx.CNthRoot(n, i))
NEXT
Output:
1.349457704883236 -0.3012830564679053 * i
0.7035425781022545 +1.190308959128094 * i
-0.9146444790833151 +1.036934450322577 * i
-1.268823953798186 -0.5494482247230521 * i
0.1304681498960107 -1.376512128259714 * i
Sets the complex number from the polar representation.
FUNCTION CPolar (BYVAL r AS DOUBLE, BYVAL theta AS DOUBLE)
| Parameter | Description |
|---|---|
| r | The modulus of complex number. |
| theta | The angle with the positive direction of x-axis. |
Returns this complex number raised to a complex power.
Returns this complex number raised to a real number.
FUNCTION CPow (BYREF power AS CComplex) AS CComplex
FUNCTION CPow (BYVAL power AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| power | A complex or a double number. |
DIM cpx AS CComplex = CComplex(1, 1)
DIM b AS CComplex = CComplex(2, 2)
PRINT cpx.CPow(b)
Output: -0.2656539988492412 +0.3198181138561362 * i
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CPow(2)
Output: 1.224606353822378e-016 +2 * i
Gets/sets the real part of a complex number.
PROPERTY CReal () AS DOUBLE
PROPERTY CReal (BYVAL x AS DOUBLE)
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex : cpx.CReal = 3
DIM d AS DOUBLE = cpx.CReal
Returns the inverse, or reciprocal, of a complex number.
FUNCTION CReciprocal () AS CComplex
FUNCTION CInverse () AS CComplex
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex = CComplex(1, 1)
Print cpx.CReciprocal
Output: 0.5 -0.5 * i
Returns the complex secant of this complex number.
FUNCTION CSec () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CSec
Output: 0.4983370305551869 +0.591083841721045 * i
Returns the complex hyperbolic secant of this complex number.
FUNCTION CSecH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CSecH
Output: 0.4983370305551869 -0.591083841721045 * i
Uses the cartesian components (x,y) to set the real and imaginary parts of the complex number.
PROPERTY CSet (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE)
PROPERTY CRect (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE)
| Parameter | Description |
|---|---|
| x, y | Double values. |
DIM cpx AS CComplex : cpx.CSet = 3, 4
DIM cpx AS CComplex : cpx.CRect = 3, 4
Returns the sign of this complex number.
If number is greater than zero, then CSgn returns 1.
If number is equal to zero, then CSgn returns 0.
If number is less than zero, then CSgn returns -1.
PROPERTY CSgn () AS LONG
Returns the complex sine of this complex number.
PROPERTY CSin () AS CSin
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CSin
Output: 1.298457581415977 +0.6349639147847361 * i
Returns the complex hyperbolic sine of this complex number.
FUNCTION CSinH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CSinH
Output: 0.6349639147847361 +1.298457581415977 * i
Returns the square root of the complex number z. The branch cut is the negative real axis. The result always lies in the right half of the complex plane.
FUNCTION CSqr () AS CComplex
FUNCTION CSqrt () AS CComplex
Returns the complex square root of the real number x, where x may be negative.
FUNCTION CSqr (BYVAL value AS DOUBLE) AS CComplex
FUNCTION CSqrt (BYVAL value AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| value | A double value representing a real number. |
DIM cpx AS CComplex = CComplex(2, 3)
PRINT cpx.CSqrt
Output: 1.67414922803554 +0.895977476129838 * i
Compute the square root of -1:
DIM cpx AS CComplex = CComplex(-1)
PRINT cpx.CSqr
Output: 0 +1.0 * i
Subtracts a complex number.
FUNCTION CSub (BYREF z AS CComplex) AS CComplex
FUNCTION CSub (BYVAL x AS DOUBLE, BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| z | The complex number to subtract. |
| x, y | Double values representing the real and imaginary parts. |
DIM cpx AS CComplex = CComplex(5, 6)
DIM cpx2 AS CComplex = CComplex(2, 3)
cpx = cpx.CSub(cpx2)
' --or-- cpx = cpx.CSub(CComplex(2, 3))
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CSub(2, 3)
Subtracts an imaginary number.
FUNCTION CSubImag (BYVAL y AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| y | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cx = cpx.CSubImag(3)
Subtracts a real number.
FUNCTION CSubReal (BYVAL x AS DOUBLE) AS CComplex
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex = CComplex(5, 6)
cpx = cpx.CSubReal(2)
Exchanges the contents of two complex numbers.
SUB CSwap (BYREF z AS CComplex)
| Parameter | Description |
|---|---|
| z | The complex number to swap. |
Returns the complex tangent of this complex number.
FUNCTION CTan () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CTan
Output: 0.2717525853195117 +1.083923327338695 * i
Returns the complex hyperbolic tangent of this complex number.
FUNCTION CTanH () AS CComplex
DIM cpx AS CComplex = CComplex(1, 1)
PRINT cpx.CTanH
Output: 1.083923327338695 +0.2717525853195119 * i
Calculates the inverse hyperbolic cosine.
FUNCTION ArcCosH (BYVAL x AS DOUBLE) AS DOUBLE
| Parameter | Description |
|---|---|
| x | A double value. |
DIM AS double pi = 3.1415926535
DIM AS double x, y
DIM cpx AS CComplex
x = cosh(pi / 4)
y = cpx.ArcCosH(x)
print "cosh = ", pi/4, x
print "ArcCosH = ", x, y
Output:
cosh = 0.785398163375 1.324609089232506
acosh = 1.324609089232506 0.7853981633749999
Returns the inverse hyperbolic tangent of a number.
FUNCTION ArcTanH (BYVAL x AS DOUBLE) AS DOUBLE
| Parameter | Description |
|---|---|
| x | A double value. |
DIM cpx AS CComplex
print cpx.ArcTanh(0.76159416)
Output: 1.00000000962972
print cpx.ArcTanH(-0.1)
Output: -0.1003353477310756
Determines whether the argument is an infinity.
FUNCTION IsInfinity (BYVAL x AS DOUBLE) AS LONG
FUNCTION IsInf (BYVAL x AS DOUBLE) AS LONG
| Parameter | Description |
|---|---|
| x | A double value. |
Returns +1 if x is positive infinity, -1 if x is negative infinity and 0 otherwise.